Analisis ini bertujuan untuk membuat visualisasi data berdasarkan dataset UAS yang diberikan, termasuk grafik univariat, bivariat, multivariat, dan interaktif. Dataset ini mencakup informasi tentang harapan hidup, pendapatan per kapita, populasi, dan rata-rata jumlah anak dari berbagai negara dan benua selama beberapa tahun.
# Membaca dataset dari file Excel
file_path <- "Data UAS.xlsx"
df <- read_excel(file_path, sheet = "Data") %>%
mutate(
Benua = factor(Benua), # Mengubah Benua menjadi faktor
Tahun = as.integer(Tahun) # Memastikan Tahun dalam format integer
)
# Menampilkan beberapa baris pertama untuk pengecekan struktur data
head(df)## # A tibble: 6 × 8
## geo Negara Benua Tahun Angka_Harapan_Hidup Pendapatan_per_kapita Populasi
## <chr> <chr> <fct> <int> <dbl> <dbl> <dbl>
## 1 afg Afghanis… asia 1800 28.2 481. 3280000
## 2 afg Afghanis… asia 1801 28.2 481. 3280000
## 3 afg Afghanis… asia 1802 28.2 481. 3280000
## 4 afg Afghanis… asia 1803 28.2 481. 3280000
## 5 afg Afghanis… asia 1804 28.2 481. 3280000
## 6 afg Afghanis… asia 1805 28.2 481. 3280000
## # ℹ 1 more variable: Jumlah_anak <dbl>
## geo Negara Benua Tahun
## Length:44325 Length:44325 africa :12150 Min. :1800
## Class :character Class :character americas: 7875 1st Qu.:1856
## Mode :character Mode :character asia :13275 Median :1912
## europe :11025 Mean :1912
## 3rd Qu.:1968
## Max. :2024
## Angka_Harapan_Hidup Pendapatan_per_kapita Populasi Jumlah_anak
## Min. : 0.00 Min. : 163.0 Min. :6.510e+02 Min. :0.710
## 1st Qu.:31.16 1st Qu.: 974.1 1st Qu.:2.972e+05 1st Qu.:4.210
## Median :36.13 Median : 1714.7 Median :1.811e+06 Median :5.830
## Mean :42.99 Mean : 5932.4 Mean :1.380e+07 Mean :5.235
## 3rd Qu.:58.43 3rd Qu.: 4512.2 3rd Qu.:6.370e+06 3rd Qu.:6.570
## Max. :85.50 Max. :221544.1 Max. :1.451e+09 Max. :8.860
ggplot(df, aes(x = Angka_Harapan_Hidup)) +
geom_histogram(
bins = 30,
fill = "#69b3a2",
color = "white",
alpha = 0.9
) +
theme_minimal() +
labs(
title = "Distribusi Angka Harapan Hidup",
x = "Angka Harapan Hidup",
y = "Frekuensi"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
axis.text = element_text(size = 10)
)Interpretasi: Histogram ini menunjukkan bahwa angka harapan hidup memiliki distribusi yang bervariasi. Puncak histogram menunjukkan kelompok negara yang memiliki harapan hidup dominan dalam dataset.
p_scatter <- ggplot(df, aes(
x = Pendapatan_per_kapita,
y = Angka_Harapan_Hidup,
size = Populasi,
color = Benua,
text = paste(
"Negara:", Negara,
"<br>Populasi:", scales::comma(Populasi),
"<br>Pendapatan:", scales::comma(Pendapatan_per_kapita),
"<br>Harapan Hidup:", round(Angka_Harapan_Hidup, 2)
)
)) +
geom_point(alpha = 0.8) +
scale_x_log10(labels = scales::comma) +
theme_minimal() +
labs(
title = "Pendapatan per Kapita vs Angka Harapan Hidup",
x = "Pendapatan per Kapita (Log Skala)",
y = "Angka Harapan Hidup",
color = "Benua",
size = "Populasi"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
legend.position = "bottom"
)
plotly::ggplotly(p_scatter, tooltip = "text")Interpretasi: Scatter plot ini menunjukkan adanya hubungan positif antara pendapatan per kapita dan angka harapan hidup. Negara-negara dengan pendapatan per kapita tinggi umumnya memiliki angka harapan hidup yang lebih tinggi.
heatmap_data <- df %>%
group_by(Benua, Tahun) %>%
summarize(Rata_Jumlah_Anak = mean(Jumlah_anak, na.rm = TRUE), .groups = "drop")
p_heatmap <- ggplot(heatmap_data, aes(x = Tahun, y = Benua, fill = Rata_Jumlah_Anak)) +
geom_tile(color = "white") +
scale_fill_gradientn(colors = brewer.pal(9, "YlOrRd"), na.value = "grey") +
theme_minimal() +
labs(
title = "Rata-rata Jumlah Anak Berdasarkan Benua dan Tahun",
x = "Tahun",
y = "Benua",
fill = "Rata-rata\nJumlah Anak"
) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
axis.text.x = element_text(angle = 45, hjust = 1)
)
plotly::ggplotly(p_heatmap)Interpretasi: Heatmap ini menggambarkan tren jumlah rata-rata anak berdasarkan benua dan tahun. Warna yang lebih gelap mengindikasikan rata-rata jumlah anak yang lebih tinggi.
p_bubble <- plot_ly(
data = df,
x = ~Pendapatan_per_kapita,
y = ~Angka_Harapan_Hidup,
size = ~Populasi,
color = ~Benua,
text = ~paste(
"Negara:", Negara,
"<br>Populasi:", scales::comma(Populasi),
"<br>Pendapatan:", scales::comma(Pendapatan_per_kapita),
"<br>Harapan Hidup:", round(Angka_Harapan_Hidup, 2)
),
type = "scatter",
mode = "markers",
marker = list(sizemode = "diameter", opacity = 0.7)
) %>%
layout(
title = "Bubble Plot: Pendapatan vs Harapan Hidup",
xaxis = list(title = "Pendapatan per Kapita (Log Skala)", type = "log"),
yaxis = list(title = "Angka Harapan Hidup"),
legend = list(title = list(text = "Benua"))
)
p_bubbleInterpretasi: Bubble plot ini memberikan eksplorasi lebih lanjut dengan ukuran titik yang merepresentasikan populasi negara. Negara dengan populasi besar tampak lebih dominan dalam grafik.